<%--
    Document   : additions
    Created on : 15.05.2011, 14:17:12
    Author     : 647_2
--%>


<%@page import="Special.SpecialGenre"%>
<%@page import="Special.SpecialRecording"%>
<%@page import="Special.SpecialComposition"%>
<%@page import="Special.SpecialUser"%>
<%@page import="Entities.Executor"%>
<%@page import="ExtEntities.ExtAlbum"%>
<%@page import="Entities.Country"%>
<%@page import="Entities.Group"%>
<%@page import="java.util.LinkedList"%>
<%@page import="params.Params"%>
<%@page import="Access.CountriesRemote"%>
<%@page import="Access.GroupsRemote"%>
<%@page import="Access.ExecutorsRemote"%>
<%@page import="Access.SpecialRemote"%>
<%@page import="javax.naming.InitialContext"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">



<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <%
                   int mode = 0;
                   int ID = 0;
                   int gID = 0;
                   int cID = 0;
                   String title = "";

                   if (request.getParameter("mode") != null){
                     mode = Integer.parseInt(request.getParameter("mode"));
                   } else {
                     mode = 0;
                   }

                   InitialContext ic = new InitialContext();

                   SpecialRemote sr = (SpecialRemote)ic.lookup(SpecialRemote.class.getName());
                   ExecutorsRemote ex = (ExecutorsRemote)ic.lookup(ExecutorsRemote.class.getName());
                   GroupsRemote gr = (GroupsRemote)ic.lookup(GroupsRemote.class.getName());
                   CountriesRemote co = (CountriesRemote)ic.lookup(CountriesRemote.class.getName());

                   switch (mode){

                        case 8: //albums count (group, country)
                           if (request.getParameter("gID") != null){
                             gID = Integer.parseInt(request.getParameter("gID"));
                           } else {
                             gID = 0;
                           }

                           if (request.getParameter("cID") != null){
                             cID = Integer.parseInt(request.getParameter("cID"));
                           } else {
                             cID = 0;
                           }



                           if ((gID == 0) || (cID == 0)){

                         title = "Выберите группу и страну";
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));



                         out.println("<form action=\"" + Params.getSiteURL() + "additions.jsp\" method=\"GET\">");
                         out.println("<input type=\"hidden\" name=\"mode\" value=\"8\">");
                         out.println("Выберите группу: <select name=\"gID\">");

                         LinkedList<Group> grs = gr.getAllGroups();

                         for (int i = 0; i < grs.size(); i++){
                              out.println("<option value=\"" + grs.get(i).getIDAsInt() + "\">" + grs.get(i).get_name() + "</option>");
                         }

                         out.println("</select><br />");

                         out.println("Выберите страну: <select name=\"cID\">");

                         LinkedList<Country> c = co.getAllCountries();

                         for (int i = 0; i < c.size(); i++){
                              out.println("<option value=\"" + c.get(i).getIDAsInt() + "\">" + c.get(i).get_name() + "</option>");
                         }

                         out.println("</select><br />");

                         out.println("<input type=\"submit\" value=\"Показать\">");
                         out.println("</form>");

                         } else {



                         title = "Количество альбомов, записанных группой " + gr.getGroup(gID).get_name() + " в стране " + co.getCountry(cID).get_name();
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));

                         out.println("<form action=\"" + Params.getSiteURL() + "additions.jsp\" method=\"GET\">");
                         out.println("<input type=\"hidden\" name=\"mode\" value=\"8\">");
                         out.println("Выберите группу: <select name=\"gID\">");

                         LinkedList<Group> grs = gr.getAllGroups();

                         for (int i = 0; i < grs.size(); i++){
                             if (gID == grs.get(i).getIDAsInt()){
                               out.println("<option value=\"" + grs.get(i).getIDAsInt() + "\" selected>" + grs.get(i).get_name() + "</option>");
                             } else {
                               out.println("<option value=\"" + grs.get(i).getIDAsInt() + "\">" + grs.get(i).get_name() + "</option>");
                             }
                         }

                         out.println("</select><br />");

                         out.println("Выберите страну: <select name=\"cID\">");

                         LinkedList<Country> c = co.getAllCountries();

                         for (int i = 0; i < c.size(); i++){
                             if (cID == c.get(i).getIDAsInt()){
                               out.println("<option value=\"" + c.get(i).getIDAsInt() + "\" selected>" + c.get(i).get_name() + "</option>");
                             } else {
                               out.println("<option value=\"" + c.get(i).getIDAsInt() + "\">" + c.get(i).get_name() + "</option>");
                             }
                         }

                         out.println("</select><br />");

                         out.println("<input type=\"submit\" value=\"Показать\">");
                         out.println("</form>");

                        out.println("Количество альбомов, записанных группой " + gr.getGroup(gID).get_name() + " в стране " + co.getCountry(cID).get_name() + ": " + sr.getCountAlbumsByGroupIDAndCountryID(gID, cID));

                         }
                        break;


                       case 7: //
                         title = "Альбом с самым большим рейтингом";
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));

                         ExtAlbum album = sr.getGreatableAlbum();

                         if (album != null) {

                         out.println("Альбом с самым большим рейтингом: <a href=\"" + Params.getSiteURL() + "albums.jsp?mode=2&ID=" + album.getID() + "\">" + album.getName()+ "</a><br />");

                         } else {
                           out.println("Ничего не найдено");
                         }
                        break;

                       case 6: //albums (ewi)
                           if (request.getParameter("ID") != null){
                             ID = Integer.parseInt(request.getParameter("ID"));
                           } else {
                             ID = 0;
                           }

                         

                           if (ID == 0){

                         title = "Выберите исполнителя";
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));



                         out.println("<form action=\"" + Params.getSiteURL() + "additions.jsp\" method=\"GET\">");
                         out.println("<input type=\"hidden\" name=\"mode\" value=\"6\">");
                         out.println("Выберите исполнителя: <select name=\"ID\">");

                         LinkedList<Executor> exs = ex.getAllExecutors();

                         for (int i = 0; i < exs.size(); i++){
                              out.println("<option value=\"" + exs.get(i).getIDAsInt() + "\">" + exs.get(i).get_FIO() + "</option>");
                         }

                         out.println("</select>");

                         out.println("<input type=\"submit\" value=\"Показать\">");
                         out.println("</form>");
                         
                         } else {



                         title = "Альбомы исполнителя " + ex.getExecutor(ID).get_FIO();
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));

                         out.println("<form action=\"" + Params.getSiteURL() + "additions.jsp\" method=\"GET\">");
                         out.println("<input type=\"hidden\" name=\"mode\" value=\"6\">");
                         out.println("Выберите исполнителя: <select name=\"ID\">");

                         LinkedList<Executor> exs = ex.getAllExecutors();

                         for (int i = 0; i < exs.size(); i++){
                             if ((i + 1) == ID){
                               out.println("<option value=\"" + exs.get(i).getIDAsInt() + "\" selected>" + exs.get(i).get_FIO() + "</option>");  
                             } else {
                               out.println("<option value=\"" + exs.get(i).getIDAsInt() + "\">" + exs.get(i).get_FIO() + "</option>");
                             }
                         }

                         out.println("</select>");

                         out.println("<input type=\"submit\" value=\"Показать\">");
                         out.println("</form>");

                           LinkedList<ExtAlbum> albums = sr.getAlbumsByExecutorID(ID);
                           
                           if (albums != null){
                             out.println("<table><tr><td><b>ID</b></td><td><b>Название</b></td><td><b>Дата издания</b></td><td><b>Группы</b></td></tr>");
                       for (int i = 0; i < albums.size(); i++){
                           out.println("<tr><td><a href=\"" + Params.getSiteURL() + "albums.jsp?mode=2&ID=" + albums.get(i).getID() + "\">" + albums.get(i).getID() + "</a></td><td><a href=\"" + Params.getSiteURL() + "albums.jsp?mode=2&ID=" + albums.get(i).getID() + "\">" + albums.get(i).getName() + "</a></td><td>" + albums.get(i).getDate() + "</td><td>");
                           for (int j = 0; j < albums.get(i).getGroups().size(); j++){
                               if (j < albums.get(i).getGroups().size() - 1){
                                    out.println("<a href=\"" + Params.getSiteURL() + "groups.jsp?mode=1&ID=" + albums.get(i).getGroups().get(j).getIDAsInt() + "\">" + albums.get(i).getGroups().get(j).get_name() + "</a>, ");
                               } else {
                                    out.println("<a href=\"" + Params.getSiteURL() + "groups.jsp?mode=1&ID=" + albums.get(i).getGroups().get(j).getIDAsInt() + "\">" + albums.get(i).getGroups().get(j).get_name() + "</a>");
                               }
                           }
                           out.println("</td><tr>");
                       }
                       out.println("</table>");
                           } else {
                             out.println("Ничего не найдено");
                           }
                         }
                        break;


                         

                       case 4: //compositions with many genres
                         title = "Самый активный пользователь";
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));

                         SpecialUser su = sr.getActiveUser();

                         if (su != null) {

                         out.println("Самый активный пользователь: <a href=\"" + Params.getSiteURL() + "users.jsp?mode=2&ID=" + su.getID() + "\">" + su.getName() + "</a>: " + su.getCompositions() + " оц.<br />");

                         } else {
                           out.println("Ничего не найдено");
                         }
                        break;

                       case 3: //compositions with many genres
                         title = "Композиции, принадлежащие нескольким жанрам";
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));

                         LinkedList<SpecialComposition> comps = sr.getCompositionsWithManyGenres();

                         if (comps != null){
                           for (int i = 0; i < comps.size(); i++){
                             out.println(comps.get(i).getName() + ": " + comps.get(i).getGenres() + "<br />");
                           }
                         } else {
                           out.println("Ничего не найдено");
                         }
                        break;

                       case 2: //count compositions and albums in recordings
                         title = "Количество композиций и альбомов по звукозаписывающим компаниям";
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));

                         LinkedList<SpecialRecording> recordings = sr.getCountCompositionsAndAlbumsInRecording();

                         if (recordings != null){
                           for (int i = 0; i < recordings.size(); i++){
                             out.println(recordings.get(i).getRecording() + ": альбомов - " + recordings.get(i).getAlbums() + ", композиций - " + recordings.get(i).getCompositions() + "<br />");
                           }
                         } else {
                           out.println("Ничего не найдено");
                         }
                        break;

                       case 1: //count compositions in genre
                         title = "Количество композиций по жанрам";
                         out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                         out.println(Params.getHeader(title));

                         LinkedList<SpecialGenre> genres = sr.getCountCompositionInGenres();

                         if (genres != null){
                           for (int i = 0; i < genres.size(); i++){
                             out.println(genres.get(i).getGenre() + ": " + genres.get(i).getCount() + "<br />");
                           }
                         } else {
                           out.println("Ничего не найдено");
                         }
                        break;

                       case 0: //all
                       default:
                           title = "Выбирите действие";
                           out.println("<title>" + title + " - " + Params.getSiteName() + "</title></head><body>");
                           out.println(Params.getHeader(title));

                           out.println("<a href=\"" + Params.getSiteURL() + "additions.jsp?mode=1\">[Количество композиций по жанрам]</a><br />");
                           out.println("<a href=\"" + Params.getSiteURL() + "additions.jsp?mode=2\">[Количество композиций и альбомов по звукозаписывающим компаниям]</a><br />");
                           out.println("<a href=\"" + Params.getSiteURL() + "additions.jsp?mode=3\">[Композиции, принадлежащие нескольким жанрам]</a><br />");
                           out.println("<a href=\"" + Params.getSiteURL() + "additions.jsp?mode=4\">[Самый активный пользователь]</a><br />");
                           out.println("<a href=\"" + Params.getSiteURL() + "playlists.jsp?mode=1&ID=0&page=1\">[Показать плейлист пользователя]</a><br />");
                           out.println("<a href=\"" + Params.getSiteURL() + "additions.jsp?mode=6&ID=0\">[Список альбомов по исполнителю]</a><br />");
                           out.println("<a href=\"" + Params.getSiteURL() + "additions.jsp?mode=7\">[Альбом с самым большим рейтингом]</a><br />");
                           out.println("<a href=\"" + Params.getSiteURL() + "additions.jsp?mode=8\">[Количество альбомов, записанных некоторой группой в некоторой стране]</a><br />");
                        break;
                   }

        %>

        <% out.print(Params.getFooter()); %>
    </body>
</html>
